package com.project.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.project.entity.po.Img;
import com.project.entity.po.Menu;
import com.project.entity.qo.ImgQo;
import com.project.entity.qo.MenuQo;
import com.project.entity.vo.MenuVo;
import com.project.entity.vo.MenuVo2;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @ProjectName: 
 * @Package: 
 * @ClassName: 
 * @Author: ZhaoLongShi
 * @CreateDate: 
 */
public interface MenuMapper extends BaseMapper<Menu> {
    /**
     * 根据id获取菜的信息
     * @param id
     * @return
     */
    default Menu selectPriceById(Long id){
        QueryWrapper<Menu> qw = new QueryWrapper<>();
        qw.eq(Menu.COL_M_ID,id);
        return this.selectOne(qw);
    }

    /**
     * 查看菜单
     */
    List<MenuVo> selectMenuList(@Param("type") Integer type,@Param("id")Long menuId);

    Page<MenuVo2> selectMenuPage(Page<MenuVo2> page);

    /**
     * 根据状态查询
     * @param status
     * @return
     */
    List<MenuVo> selectMenuBystatus(Integer status);
    /**
     * 根据菜品id获取图片路径
     * @param menuId
     * @return
     */
    List<Img> urlList(Long menuId);

    /**
     * 删除图片
     * @param imgId
     * @return
     */
    Integer deleteImg(Long imgId);

    /**
     * 添加图片
     * @param img
     * @return
     */
    Integer addImg(Img img);

    /**
     *
     * @param menu
     * @return
     */
    Integer updateMenu(Menu menu);

    /**
     * 是否售空，0代表售空，1代表正常，2代表审核中
     * @param menuQo
     * @return
     */
    Integer updateStatus(MenuQo menuQo);

    /**
     * 删除菜品
     * @param id
     * @return
     */
    Integer deleteMenu(List<Long> id);

    /**
     * 根据菜id获取图片id
     * @param id
     * @return
     */
    List<Menu> getImgId(List<Long> id);

    /**
     * 根据图片id删除图片
     * @param id
     * @return
     */
    Integer deleteImgs(List<Long> id);

    /**
     * 点赞
     * @param menuId
     * @return
     */
    Integer addPraiseNumber(Long menuId);

    /**
     * 根据点赞排行
     * @return
     */
    List<MenuVo> rankingList();

    /**
     * 根据名字模糊查询
     * @param name
     * @return
     */
    List<MenuVo> selectMenuByName(String name);
}